#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//
//void rotate(int* nums, int numsSize, int k) {
//    for (int i = 0; i < k; i++)
//    {
//        int tmp = nums[numsSize - 1];
//        for (int i = numsSize - 2; i >= 0; --i)
//        {
//            nums[i + 1] = nums[i];
//        }
//        nums[0] = tmp;
//    }
//
//}


void reverse(int* a, int left, int right)
{
    while (left < right)
    {
        int tmp = a[left];
        a[left] = a[right];
        a[right] = tmp;
        left++;
        right--;
    }
}

void rotate(int* nums, int numsSize, int k) {
    k %= numsSize;
    reverse(nums, 0, numsSize - k - 1);
    reverse(nums, numsSize - k, numsSize - 1);
    reverse(nums, 0, numsSize - 1);

}

int main()
{
    int arr[] = { 1,2,3,4,5,6,7 };
    int len = sizeof(arr) / sizeof(arr[0]);
    rotate(arr,len, 3);
    for (int i = 0; i < len; i++)
    {
        printf("%d ",arr[i]);
    }

    return 0;
}

//#include<stdio.h>
//int missingNumber(int* nums, int numsSize) {
//    int x = 0;
//    for (int i = 0; i < numsSize; ++i)
//    {
//        x ^= nums[i];
//    }
//
//    for (int i = 0; i < numsSize + 1; i++)
//    {
//        x ^= i;
//    }
//    return x;
//}
//
//int missingNumber(int* nums, int numsSize) {
//    int x = (0 + numsSize) * (numsSize + 1) / 2;
//
//    for (int i = 0; i < numsSize; i++)
//    {
//        x -= nums[i];
//    }
//    return x;
//}
//
//int main()
//{
//    int arr[] = { 9,6,4,2,3,5,7,0,1 };
//    int s = sizeof(arr) / sizeof(arr[0]);
//    int x = missingNumber(arr, s);
//    printf("%d",x);
//    return 0;
//}